package com.superatom.concurrent.share;

public class EvenGenerator extends IntGenerator {
    private int currentEvenValue = 0;

    public int next() {
        // 以下两步是在多线程中一个危险的操作
        // 一个任务有可能在另一个任务执行对一个对currentEvenValue的递增操作之后，但是没有执行第二个currentEvenValue的递增操作
        // 调用next()方法。
        ++currentEvenValue;
        // 通过调用yield()会更明显，当然这也是一种尽快暴露缺陷的方法
        // Thread.yield();
        ++currentEvenValue;
        return currentEvenValue;
    }

    public static void main(String[] args) {
        EvenChecker.test(new EvenGenerator());
    }
}
